package com.cy.jt.system.web.util;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;

public class PageUtils {
    /**
     * 1、泛型方法：返回值前后的要加泛型 返回值为void 在前面加泛型即可
     * 如果前面不加会报错，Java无法判断泛型来自哪里
     * public static <T>Page<T> startPage(){
     *      //public static <T>Page<T> startPage(){}
     *      //如果前面不加泛型会报错
     *         return null;
     *     }
     * 2、泛型类：在类上面加了泛型，对静态方法没有影响
     * 例如：public class PageUtils<T> {
     *   public static Page<T> startPage(){
     *      //类上加了泛型Page<T>这里还是会报错，所有类泛型对静态方法没有影响。
     *      //所以静态方法不能使用类泛型，要使用方法泛型
     * ******************************************************************
     *      //如下：
     *      public class PageUtils {
     *          public static <T>Page<T> startPage(){
     *
     *         return null;
     *          }
     *      }
     * *********************************************************************
     *         return null;
     *     }
     * }
     * @param <T>
     * @return
     */
    public static <T>Page<T> startPage(){
        /**
         * spring中获取request对象 -- 固定写法如下：
         * HttpServletRequest request= ((ServletRequestAttributes)RequestContextHolder
         *          .getRequestAttributes()).getRequest();
         * 也可以把上面这句拆开写 如下：
         * ServletRequestAttributes requestAttributes=
         *          ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes());
         * HttpServletRequest request= requestAttributes.getRequest();
         */
        HttpServletRequest request= ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
        //基于请求对象获取请求中的参数
        String pageCurrentStr = request.getParameter("pageCurrent");
        String pageSizeStr = request.getParameter("pageSize");
        //字符串转化为整数，必须传值，否则可能会报错，以后可以考虑加个判断
        if (pageCurrentStr == null || "".equals(pageCurrentStr)){
            pageCurrentStr = "1";
        }
        if (pageSizeStr == null || "".equals(pageSizeStr)){
            pageSizeStr = "3";
        }
        Integer pageCurrent = Integer.parseInt(pageCurrentStr);
        Integer pageSize = Integer.parseInt(pageSizeStr);
        return PageHelper.startPage(pageCurrent,pageSize);
    }
}
